home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / include / dev / RCS / graphics.h,v < prev    next >
Text File  |  1991-06-26  |  12KB  |  458 lines

  1. head     1.5;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.5
  10. date     91.06.25.22.16.02;  author mottsmth;  state Exp;
  11. branches ;
  12. next     1.4;
  13.  
  14. 1.4
  15. date     91.05.30.13.12.25;  author jhh;  state Exp;
  16. branches ;
  17. next     1.3;
  18.  
  19. 1.3
  20. date     90.10.19.15.42.02;  author mgbaker;  state Exp;
  21. branches ;
  22. next     1.2;
  23.  
  24. 1.2
  25. date     89.07.18.17.21.30;  author ouster;  state Exp;
  26. branches ;
  27. next     1.1;
  28.  
  29. 1.1
  30. date     89.07.10.19.25.32;  author nelson;  state Exp;
  31. branches ;
  32. next     ;
  33.  
  34.  
  35. desc
  36. @Graphics io controls for the pmax graphics device.
  37. @
  38.  
  39.  
  40. 1.5
  41. log
  42. @Add semicolon before end of DevScreenInfoExt struct
  43. @
  44. text
  45. @/*
  46.  * graphics.h --
  47.  *
  48.  *    This file defines the device-dependent IOControl calls and related
  49.  *    structures for graphics devices, which are used on DS3100's to
  50.  *    interact with the display and mouse.
  51.  *
  52.  * Copyright 1989 Regents of the University of California
  53.  * Permission to use, copy, modify, and distribute this
  54.  * software and its documentation for any purpose and without
  55.  * fee is hereby granted, provided that the above copyright
  56.  * notice appear in all copies.  The University of California
  57.  * makes no representations about the suitability of this
  58.  * software for any purpose.  It is provided "as is" without
  59.  * express or implied warranty.
  60.  *
  61.  * $Header: /sprite/src/lib/include/dev/RCS/graphics.h,v 1.4 91/05/30 13:12:25 jhh Exp Locker: mottsmth $ SPRITE (Berkeley)
  62.  */
  63.  
  64. #ifndef _GRAPHICS
  65. #define _GRAPHICS
  66.  
  67. /*
  68.  * Constants:  these are the IOControl operations defined for tty's.
  69.  * The UNIX IOControl names are defined in ioctl.h.
  70.  */
  71.  
  72. #define IOC_GRAPHICS (7 << 16)
  73.  
  74. #define IOC_GRAPHICS_GET_INFO        (IOC_GRAPHICS | 0x1)
  75. #define IOC_GRAPHICS_MOUSE_POS        (IOC_GRAPHICS | 0x2)
  76. #define IOC_GRAPHICS_CURSOR_COLOR    (IOC_GRAPHICS | 0x3)
  77. #define IOC_GRAPHICS_INIT_SCREEN    (IOC_GRAPHICS | 0x4)
  78. #define IOC_GRAPHICS_KBD_CMD        (IOC_GRAPHICS | 0x5)
  79. #define IOC_GRAPHICS_GET_INFO_ADDR    (IOC_GRAPHICS | 0x6)
  80. #define IOC_GRAPHICS_CURSOR_BIT_MAP    (IOC_GRAPHICS | 0x7)
  81. #define IOC_GRAPHICS_KERN_LOOP        (IOC_GRAPHICS | 0x8)
  82. #define IOC_GRAPHICS_KERN_UNLOOP    (IOC_GRAPHICS | 0x9)
  83. #define IOC_GRAPHICS_VIDEO_ON        (IOC_GRAPHICS | 0xa)
  84. #define IOC_GRAPHICS_VIDEO_OFF        (IOC_GRAPHICS | 0xb)
  85. #define IOC_GRAPHICS_COLOR_MAP        (IOC_GRAPHICS | 0xc)
  86. #define IOC_GRAPHICS_IS_COLOR        (IOC_GRAPHICS | 0xd)
  87.  
  88. /*
  89.  * Cursor command register bits.
  90.  *
  91.  *     DEV_CURSOR_ENPA    Enable cursor plane A.
  92.  *     DEV_CURSOR_FOPA    Force cursor plane A to output 1.
  93.  *     DEV_CURSOR_ENPB    Enable cursor plane B.
  94.  *     DEV_CURSOR_FOPB    Force cursor plane B to output 1.
  95.  *     DEV_CURSOR_XHAIR    
  96.  *     DEV_CURSOR_XHCLP    Clip crosshair inside region.    
  97.  *     DEV_CURSOR_XHCL1    Select crosshair clipping region.
  98.  *     DEV_CURSOR_XHWID    Crosshair cursor line width.
  99.  *     DEV_CURSOR_ENRG1    Enable region detector 1.
  100.  *     DEV_CURSOR_FORG1    Force region detector 1 to output 1.
  101.  *     DEV_CURSOR_ENRG2    Enable region detector 2.
  102.  *     DEV_CURSOR_FORG2    Force region detector 2 to output 1.
  103.  *     DEV_CURSOR_LODSA    Load/display sprite array.
  104.  *     DEV_CURSOR_VBHI    Vertical blank polarity.
  105.  *     DEV_CURSOR_HSHI    Horizontal sync polarity.
  106.  *     DEV_CURSOR_TEST    Diagnostic test.
  107.  */
  108. #define DEV_CURSOR_ENPA        0x0001
  109. #define DEV_CURSOR_FOPA        0x0002
  110. #define DEV_CURSOR_ENPB        0x0004
  111. #define DEV_CURSOR_FOPB        0x0008
  112. #define DEV_CURSOR_XHAIR    0x0010
  113. #define DEV_CURSOR_XHCLP    0x0020
  114. #define DEV_CURSOR_XHCL1    0x0040
  115. #define DEV_CURSOR_XHWID    0x0080
  116. #define DEV_CURSOR_ENRG1    0x0100
  117. #define DEV_CURSOR_FORG1    0x0200
  118. #define DEV_CURSOR_ENRG2    0x0400
  119. #define DEV_CURSOR_FORG2    0x0800
  120. #define DEV_CURSOR_LODSA    0x1000
  121. #define DEV_CURSOR_VBHI        0x2000
  122. #define DEV_CURSOR_HSHI        0x4000
  123. #define DEV_CURSOR_TEST        0x8000
  124.  
  125. /*
  126.  * The cursor register.
  127.  */
  128. typedef volatile struct {
  129.     unsigned short    cmdReg;    /* Command register. */
  130.     unsigned short    pad1;
  131.     unsigned short    xPos;    /* X position. */
  132.     unsigned short    pad2;
  133.     unsigned short    yPos;    /* Y position. */
  134.     unsigned short    pad3;
  135.     unsigned short    xMin1;
  136.     unsigned short    pad4;
  137.     unsigned short    xMax1;
  138.     unsigned short    pad5;
  139.     unsigned short    yMin1;
  140.     unsigned short    pad6;
  141.     unsigned short    yMax1;
  142.     unsigned short    pad7;
  143.     unsigned short    unused7;
  144.     unsigned short    padUnused7;
  145.     unsigned short    unused8;
  146.     unsigned short    padUnused8;
  147.     unsigned short    unused9;
  148.     unsigned short    padUnused9;
  149.     unsigned short    unusedA;
  150.     unsigned short    padUnusedA;
  151.     unsigned short    xMin2;
  152.     unsigned short    pad8;
  153.     unsigned short    xMax2;
  154.     unsigned short    pad9;
  155.     unsigned short    yMin2;
  156.     unsigned short    padA;
  157.     unsigned short    yMax2;
  158.     unsigned short    padB;
  159.     unsigned short    memory;
  160.     unsigned short    padC;
  161. } DevPCCRegs;
  162.  
  163. /*
  164.  * The VDAC register.
  165.  */
  166. typedef volatile struct {
  167.     unsigned char   mapWA;
  168.     unsigned char   pad0;
  169.     unsigned short  pad1;
  170.  
  171.     unsigned char   map;
  172.     unsigned char   pad2;
  173.     unsigned short  pad3;
  174.  
  175.     unsigned char   mask;
  176.     unsigned char   pad4;
  177.     unsigned short  pad5;
  178.  
  179.     unsigned char   mapRA;
  180.     unsigned char   pad6;
  181.     unsigned short  pad7;
  182.  
  183.     unsigned char   overWA;
  184.     unsigned char   pad8;
  185.     unsigned short  pad9;
  186.  
  187.     unsigned char   over;
  188.     unsigned char   pad10;
  189.     unsigned short  pad11;
  190.  
  191.     unsigned char   reserved;
  192.     unsigned char   pad12;
  193.     unsigned short  pad13;
  194.  
  195.     unsigned char   overRA;
  196.     unsigned char   pad14;
  197.     unsigned short  pad15;
  198. } DevVDACRegs;
  199.  
  200. /*
  201.  *  Events.
  202.  */
  203. typedef struct {
  204.         short            x;        /* x position */
  205.         short             y;        /* y position */
  206.         unsigned int    time;        /* 1 millisecond units */
  207.         unsigned char   type;        /* button up/down/raw or motion */
  208.         unsigned char   key;        /* the key (button only) */
  209.         unsigned char   index;        /* which instance of device */
  210.         unsigned char   device;        /* which device */
  211. } DevEvent;
  212.  
  213. /*
  214.  * type field
  215.  */
  216. #define DEV_BUTTON_UP_TYPE          0
  217. #define DEV_BUTTON_DOWN_TYPE        1
  218. #define DEV_BUTTON_RAW_TYPE         2
  219. #define DEV_MOTION_TYPE             3
  220. /*
  221.  * Key field.
  222.  */
  223. #define DEV_EVENT_LEFT_BUTTON    0x01
  224. #define DEV_EVENT_MIDDLE_BUTTON    0x02
  225. #define DEV_EVENT_RIGHT_BUTTON    0x03
  226. /*
  227.  * device field
  228.  */
  229. #define DEV_NULL_DEVICE          0    /* NULL event (for QD_GETEVENT ret) */
  230. #define DEV_MOUSE_DEVICE    1        /* mouse */
  231. #define DEV_KEYBOARD_DEVICE    2        /* main keyboard */
  232. #define DEV_TABLET_DEVICE    3        /* graphics tablet */
  233. #define DEV_AUX_DEVICE          4        /* auxiliary */
  234. #define DEV_CONSOLE_DEVICE    5        /* console */
  235. #define DEV_KNOB_DEVICE          8
  236. #define DEV_JOYSTICK_DEVICE    9
  237.  
  238. #define DEV_MAXEVQ    64    /* must be power of 2 */
  239. #define DEV_EVROUND(x)    ((x) & (DEV_MAXEVQ - 1))
  240. #define DEV_TABLET_RES    2
  241.  
  242. typedef struct {
  243.     unsigned int    time;
  244.     short        x, y;
  245. } DevTimeCoord;
  246.  
  247. /*
  248.  * The event queue. This structure is normally included in the info
  249.  * returned by the device driver.
  250.  */
  251. typedef struct {
  252.     DevEvent    *events;
  253.     unsigned int     eSize;
  254.         unsigned int    eHead;
  255.         unsigned int    eTail;
  256.     unsigned long    timestampMS;
  257.     DevTimeCoord    *tcs;    /* history of pointer motions */
  258.     unsigned int    tcSize;
  259.     unsigned int    tcNext;    /* simple ring buffer, old events are tossed */
  260. } DevEventQueue;
  261.  
  262. /* 
  263.  * mouse cursor position
  264.  */
  265. typedef struct {
  266.         short x;
  267.         short y;
  268. } DevCursor;
  269.  
  270. /* 
  271.  * mouse motion rectangle
  272.  */
  273. typedef struct {
  274.         short bottom;
  275.         short right;
  276.         short left;
  277.         short top;
  278. } DevBox;
  279.  
  280. /*
  281.  * Structures used by iocontrols.
  282.  */
  283. typedef struct {
  284.     char nbytes;        /* Number of bytes in parameter */
  285.     unsigned char cmd;    /* Command to be sent, peripheral bit will */
  286.                 /* be forced by driver */
  287.     unsigned char par[2];    /* Bytes of parameters to be sent */
  288. } DevKpCmd;
  289.  
  290. /*
  291.  * Information about the screen.
  292.  */
  293. typedef struct {
  294.     DevEventQueue eventQueue;    /* event & motion queues    */
  295.     short    mswitches;        /* current value of mouse buttons */
  296.     DevCursor tablet;        /* current tablet position    */
  297.     short    tswitches;        /* current tablet buttons NI!    */
  298.     DevCursor cursor;        /* current cursor position    */
  299.     short    row;            /* screen row            */
  300.     short    col;            /* screen col            */
  301.     short    maxRow;            /* max character row        */
  302.     short    maxCol;            /* max character col        */
  303.     short    maxX;            /* max x position        */
  304.     short    maxY;            /* max y position        */
  305.     short    maxCurX;        /* max cursor x position     */
  306.     short    maxCurY;        /* max cursor y position    */
  307.     int    version;        /* version of driver        */
  308.     char    *bitmap;        /* bit map position        */
  309.         short   *scanmap;               /* scanline map position        */
  310.     short    *cursorBits;        /* cursor bit position        */
  311.     short    *vaddr;            /* virtual address               */
  312.     char    *planeMask;        /* plane mask virtual location  */
  313.     DevCursor mouse;        /* atomic read/write        */
  314.     DevBox    mbox;            /* atomic read/write        */
  315.     short    mthreshold;        /* mouse motion parameter    */
  316.     short    mscale;            /* mouse scale factor (if 
  317.                        negative, then do square).    */
  318.     short    minCurX;        /* min cursor x position    */
  319.     short    minCurY;        /* min cursor y position    */
  320. } DevScreenInfo;
  321.  
  322. /*
  323.  *  This screen info is an extended version used by the graphics accelerator
  324.  *  cards in the ds5000.
  325.  */
  326.  
  327. #define DEV_CUR_SIZE (64 * 64 / 4)
  328.  
  329. typedef struct {
  330.     DevEventQueue eventQueue;    /* event & motion queues    */
  331.     short    mswitches;        /* current value of mouse buttons */
  332.     DevCursor tablet;        /* current tablet position    */
  333.     short    tswitches;        /* current tablet buttons NI!    */
  334.     DevCursor cursor;        /* current cursor position    */
  335.     short    row;            /* screen row            */
  336.     short    col;            /* screen col            */
  337.     short    maxRow;            /* max character row        */
  338.     short    maxCol;            /* max character col        */
  339.     short    maxX;            /* max x position        */
  340.     short    maxY;            /* max y position        */
  341.     short    maxCurX;        /* max cursor x position     */
  342.     short    maxCurY;        /* max cursor y position    */
  343.     int    version;        /* version of driver        */
  344.     int    flags;            /* sync flags            */
  345.     char    *memPtr;        /* memory on graphics board    */
  346.     char    *bufPtr;        /* start of ring buffer        */
  347.     char    *bufPhysPtr;        /* physical address of bufPtr    */
  348.     int    bufSize;        /* size of ring buffer        */
  349.     DevCursor mouse;        /* atomic read/write        */
  350.     DevBox    mbox;            /* atomic read/write        */
  351.     short    mthreshold;        /* mouse motion parameter    */
  352.     short    mscale;            /* mouse scale factor (if 
  353.                        negative, then do square).    */
  354.     short    minCurX;        /* min cursor x position    */
  355.     short    minCurY;        /* min cursor y position    */
  356.     char    *fooPtr;        
  357.     char    stampWidth;
  358.     char    stampHeight;
  359.     char    nPlanes;        /* primary buffer        */
  360.     char    accPresent;        /* geometry accelerator present    */
  361.     char    dPlanes;        /* double buffer        */
  362.     char    zplanes;        /* Z buffer            */
  363.     char    zzplanes;        /* extra buffer            */
  364.     unsigned char cursBits[DEV_CUR_SIZE];
  365.     int    cursFG;
  366.     int    cursBG;            
  367.     unsigned short cmapIndex;    /* start CMAP update here    */
  368.     unsigned short cmapCount;    /* update this # of CMAP entries*/
  369.     int    colormap[256];
  370.     int    *sticPollReg;        /* STIC polling register    */
  371.     int    *sticReg;        /* STIC control registers    */
  372.     int    ptptPhys;        /* phys addr: ptpt        */
  373.     int    ptptSize;        /* # entries in ptpt        */
  374.     int    *ptptPagein;        /* request server pagein    */
  375. } DevScreenInfoExt;
  376.  
  377. typedef struct {
  378.     short        map;
  379.     unsigned short    index;
  380.     struct {
  381.         unsigned short red;
  382.         unsigned short green;
  383.         unsigned short blue;
  384.     } entry;
  385. } DevColorMap;
  386.  
  387. /*
  388.  * The unit number of /dev/mouse.
  389.  */
  390. #define DEV_MOUSE_UNIT    1
  391.  
  392. #endif _GRAPHICS
  393. @
  394.  
  395.  
  396. 1.4
  397. log
  398. @started adding stuff for graphics accelerators
  399. @
  400. text
  401. @d17 1
  402. a17 1
  403.  * $Header: /sprite/src/lib/include/dev/RCS/graphics.h,v 1.3 90/10/19 15:42:02 mgbaker Exp $ SPRITE (Berkeley)
  404. d330 1
  405. a330 1
  406.     int    *ptptPagein        /* request server pagein    */
  407. @
  408.  
  409.  
  410. 1.3
  411. log
  412. @Added missing iocontrol define.
  413. @
  414. text
  415. @d17 1
  416. a17 1
  417.  * $Header: /sprite/src/lib/include/dev/RCS/graphics.h,v 1.2 89/07/18 17:21:30 ouster Exp Locker: mgbaker $ SPRITE (Berkeley)
  418. d277 55
  419. @
  420.  
  421.  
  422. 1.2
  423. log
  424. @Moved a lot of stuff from the kernel devGraphics.h to here.
  425. @
  426. text
  427. @d17 1
  428. a17 1
  429.  * $Header: /sprite/src/lib/include/dev/RCS/graphics.h,v 1.1 89/07/10 19:25:32 nelson Exp Locker: ouster $ SPRITE (Berkeley)
  430. d42 1
  431. @
  432.  
  433.  
  434. 1.1
  435. log
  436. @Initial revision
  437. @
  438. text
  439. @d2 1
  440. a2 1
  441.  * tty.h --
  442. d5 2
  443. a6 1
  444.  *    structres for graphics devices.
  445. d8 1
  446. a8 2
  447.  * Copyright 1987 Regents of the University of California
  448.  * All rights reserved.
  449. d17 1
  450. a17 1
  451.  * $Header: graphics.h,v 1.1 89/06/09 19:51:49 mnelson Exp $ SPRITE (Berkeley)
  452. d25 1
  453. a25 2
  454.  * For compatibility, the UNIX IOControl names are defined as well
  455.  * as the corresponding Sprite names.
  456. d42 249
  457. @
  458.